package br.ifpi.leds.educmanager.dao;

import java.util.List;

import br.ifpi.leds.educmanager.dao.hibernate.util.ObjetoDAO;
import br.ifpi.leds.educmanager.model.Disciplina;

public class DisciplinaDAO extends ObjetoDAO {
	
	/**
	 * Persiste um objeto Disciplina no banco de dados
	 * @param disciplina a disciplina a ser persistida
	 */
	public void salvar(Disciplina disciplina) {
		iniciarSecao();
		getSecao().save(disciplina);
		getSecao().flush();
		encerrarSecao();
	}
	
	public void atualizar(Disciplina disciplina) {
		iniciarSecao();
		getSecao().update(disciplina);
		getSecao().flush();
		encerrarSecao();
	}
	
	/**
	 * Exclui uma professor do banco de dados
	 * @param disciplina a disciplina a ser exclu�da
	 */
	public void excluir(Disciplina disciplina) {
		iniciarSecao();
		getSecao().delete(disciplina);
		getSecao().flush();
		encerrarSecao();
	}
	
	/**
	 * Seleciona uma disciplina pelo seu id
	 * @param id codigo da disciplina que a identifica unicamente no banco de dados(PK)
	 * @return a disciplina selecionada caso exista
	 */
	public Disciplina recuperarPeloID(Long id) {
		iniciarSecao();
		Disciplina disciplina = (Disciplina) getSecao().get(Disciplina.class, id);
		getSecao().flush();
		encerrarSecao();
		return disciplina;
	}

	
	/**
	 * Seleciona todas as disciplinas cadastradas
	 * @return uma lista com as disciplinas
	 */
	public List<Disciplina> recuperarLista() {
		iniciarSecao();
		@SuppressWarnings("unchecked")
		List<Disciplina> lista = getSecao().createCriteria(Disciplina.class).list();
		getSecao().flush();
		encerrarSecao();
		return lista;
	}

}
